import { Action } from "@ngrx/store";



export enum SpatialQueryActionTypes {
    SPATIAL_QUERY_SELECT = '[Spatial Query] Spatial Query Select!',
    SPATIAL_QUERY_POINT = '[Spatial Query] Spatial Query Point!',
    SPATIAL_QUERY_LINE = '[Spatial Query] Spatial Query Line!',
    SPATIAL_QUERY_CIRCLE = '[Spatial Query] Spatial Query Circle!',
    SPATIAL_QUERY_RECTANGLE = '[Spatial Query] Spatial Query Rectangle!',
    SPATIAL_QUERY_POLYGON = '[Spatial Query] Spatial Query Polygon!',
    SPATIAL_QUERY_REMOVE = '[Spatial Query] Spatial Query Remove!',
    SPATIAL_QUERY_CLEAN = '[Spatial Query] Spatial Query Clean!',
    SPATIAL_QUERY_REMOVE_USABLE = '[Spatial Query] Spatial Query Remove Usable!',
    SPATIAL_QUERY_REMOVE_UNUSABLE = '[Spatial Query] Spatial Query Remove Unusable!',
    SPATIAL_QUERY_CLEAN_USABLE = '[Spatial Query] Spatial Query Clean Usable!',
    SPATIAL_QUERY_CLEAN_UNUSABLE = '[Spatial Query] Spatial Query Clean Unusable!'
}

export class SpatialQuerySelect implements Action {
    readonly type = SpatialQueryActionTypes.SPATIAL_QUERY_SELECT;
}

export class SpatialQueryPoint implements Action {
    readonly type = SpatialQueryActionTypes.SPATIAL_QUERY_POINT;
}

export class SpatialQueryLine implements Action {
    readonly type = SpatialQueryActionTypes.SPATIAL_QUERY_LINE;
}

export class SpatialQueryCircle implements Action {
    readonly type = SpatialQueryActionTypes.SPATIAL_QUERY_CIRCLE;
}

export class SpatialQueryRectangle implements Action {
    readonly type = SpatialQueryActionTypes.SPATIAL_QUERY_RECTANGLE;
}

export class SpatialQueryPolygon implements Action {
    readonly type = SpatialQueryActionTypes.SPATIAL_QUERY_POLYGON;
}

export class SpatialQueryRemove implements Action {
    readonly type = SpatialQueryActionTypes.SPATIAL_QUERY_REMOVE;
}

export class SpatialQueryClean implements Action {
    readonly type = SpatialQueryActionTypes.SPATIAL_QUERY_CLEAN;
}

export class SpatialQueryRemoveUsable implements Action {
    readonly type = SpatialQueryActionTypes.SPATIAL_QUERY_REMOVE_USABLE;
}

export class SpatialQueryRemoveUnusable implements Action {
    readonly type = SpatialQueryActionTypes.SPATIAL_QUERY_REMOVE_UNUSABLE;
}

export class SpatialQueryCleanUsable implements Action {
    readonly type = SpatialQueryActionTypes.SPATIAL_QUERY_CLEAN_USABLE;
}

export class SpatialQueryCleanUnusable implements Action {
    readonly type = SpatialQueryActionTypes.SPATIAL_QUERY_CLEAN_UNUSABLE;
}

export type SpatialQueryAction 
 = SpatialQueryCircle
 | SpatialQueryClean
 | SpatialQueryLine
 | SpatialQueryPoint
 | SpatialQueryPolygon
 | SpatialQueryRectangle
 | SpatialQueryRemove
 | SpatialQuerySelect
 | SpatialQueryRemoveUsable
 | SpatialQueryRemoveUnusable
 | SpatialQueryCleanUsable
 | SpatialQueryCleanUnusable;